package com.marvels.approve.credit.service;

import java.util.List;

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import com.marvels.approve.credit.dto.IntBankBanruDetailDTO;
import com.marvels.approve.credit.dto.IntBankBasiInfoCollectionDTO;
import com.marvels.approve.credit.dto.IntBankBasicDTO;
import com.marvels.approve.credit.dto.IntBankCreditCardDTO;
import com.marvels.approve.credit.dto.IntBankCreditPaymentRecordsDTO;
import com.marvels.approve.credit.dto.IntBankCredittipsDTO;
import com.marvels.approve.credit.dto.IntBankDwellmessageDTO;
import com.marvels.approve.credit.dto.IntBankEndowmentInsuranceDTO;
import com.marvels.approve.credit.dto.IntBankGuaranteeCountDTO;
import com.marvels.approve.credit.dto.IntBankNotCredittipsDTO;
import com.marvels.approve.credit.dto.IntBankNotPinshouseholdsDTO;
import com.marvels.approve.credit.dto.IntBankNotQuasiCreditDTO;
import com.marvels.approve.credit.dto.IntBankPositionmesageDTO;
import com.marvels.approve.credit.dto.IntBankQueryDetailDTO;
import com.marvels.approve.credit.dto.IntBankQuerySummaryDTO;
import com.marvels.approve.credit.dto.IntBankStandardCreditCardDTO;
import com.marvels.approve.credit.dto.IntBankTotalDTO;
import com.marvels.approve.process.dto.LoanApplyCaseDTO;
import com.marvels.common.dto.MarvelsResultDTO;
import com.marvels.common.exception.MarvelsBusinessException;

public interface IntBankService {
	/**
	 * 征信报告核对
	 * 
	 * @param param
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public IntBankBasiInfoCollectionDTO checktheCreditReport(LoanApplyCaseDTO param) throws MarvelsBusinessException;

	/**
	 * 征信否决
	 * 
	 * @param loanId
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Integer rejectOperating(String loanId) throws MarvelsBusinessException;

	/**
	 * 征信退回
	 * 
	 * @param loanId
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Integer returnedOperating(String loanId) throws MarvelsBusinessException;

	/**
	 * 修改或添加个人信息
	 * 
	 * @param param
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public IntBankBasicDTO saveIntBankBasicList(IntBankBasicDTO intBankBasic) throws MarvelsBusinessException;

	/**
	 * 保存居住信息
	 * 
	 * @return
	 */
	public IntBankDwellmessageDTO saveIntBankDwellmessage(IntBankDwellmessageDTO intBankDwellmessage) throws MarvelsBusinessException;

	/**
	 * 更新个人基本信息(职业信息)
	 * 
	 * @return
	 */
	public IntBankPositionmesageDTO addProfession(IntBankPositionmesageDTO intBankPositionmesage) throws MarvelsBusinessException;

	/**
	 * 保存信用提示
	 * 
	 * @return
	 */
	public IntBankCredittipsDTO updateCredittips(IntBankCredittipsDTO intBankCredittips) throws MarvelsBusinessException;

	/**
	 * 未结清贷款信息汇总 新添 或 修改
	 * 
	 * @return
	 */
	public IntBankNotCredittipsDTO updateIntBankNotCredittips(IntBankNotCredittipsDTO intBankNotCredittips)
			throws MarvelsBusinessException;

	/**
	 * 未销户贷记卡信息汇总 新添 或 修改
	 * 
	 * @return
	 */
	public IntBankNotPinshouseholdsDTO updateIntBankNotPinshouseholds(IntBankNotPinshouseholdsDTO intBankNotPinshouseholds)
			throws MarvelsBusinessException;

	/**
	 * 添加准贷记卡信息详细
	 * 
	 * @return
	 */
	public Integer addStandardCredit(IntBankStandardCreditCardDTO intBankStandardCreditCard) throws MarvelsBusinessException;

	/**
	 * 修改 准贷记卡信息详细
	 * 
	 * @return
	 */
	public Integer updateStandardCredit(IntBankStandardCreditCardDTO intBankStandardCreditCard) throws MarvelsBusinessException;

	/**
	 * 修改 或 添加 养老保险金数据
	 * 
	 * @return
	 */
	public Integer updateDetail(IntBankEndowmentInsuranceDTO intBankEndowmentInsurance) throws MarvelsBusinessException;

	/**
	 * 未销户准贷记卡信息汇总 新添 或 修改
	 * 
	 * @return
	 */
	public IntBankNotQuasiCreditDTO updateQuasiCredit(IntBankNotQuasiCreditDTO intBankNotQuasiCredit) throws MarvelsBusinessException;

	/**
	 * 未结清贷款信息汇总 新添 或 修改
	 * 
	 * @return
	 */
	public IntBankGuaranteeCountDTO updateGuaranteeCount(IntBankGuaranteeCountDTO intBankGuaranteeCount) throws MarvelsBusinessException;

	/**
	 * 添加贷款信息
	 * 
	 * @return
	 */
	public Integer updateLoanRecord(IntBankCreditPaymentRecordsDTO intBankCreditPaymentRecords)
			throws MarvelsBusinessException;

	/**
	 * 修改贷款信息
	 * 
	 * @return
	 */
	public Integer updateRecord(IntBankCreditPaymentRecordsDTO intBankCreditPaymentRecords)
			throws MarvelsBusinessException;
	

	/**
	 * 修改贷记卡信息
	 * 
	 * @return             
	 */
	public Integer updateCredit(IntBankCreditCardDTO intBankCreditCard) throws MarvelsBusinessException;

	/**
	 * 添加查询记录
	 * @param intBankQueryDetail
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Integer addQueryDetail(IntBankQueryDetailDTO intBankQueryDetail) throws MarvelsBusinessException;

	/**
	 * 添加个人记录
	 * @param intBankBanruDetail
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Integer addBanruDetail(IntBankBanruDetailDTO intBankBanruDetail) throws MarvelsBusinessException;
	/**
	 * 
	 * @param intBankQueryDetail
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Integer deleteQueryDetail(IntBankQueryDetailDTO intBankQueryDetail) throws MarvelsBusinessException;
	/**
	 * 
	 * @param intBankBanruDetail
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Integer deleteBanruDetail(IntBankBanruDetailDTO intBankBanruDetail) throws MarvelsBusinessException;

	/**
	 * 
	 * @param intBankQuerySummary
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Integer updateQueryLog(IntBankQuerySummaryDTO intBankQuerySummary) throws MarvelsBusinessException;
	/**
	 * 
	 * @param loanId
	 * @param card
	 * @return
	 * @throws MarvelsBusinessException
	 */
	// 录入信息完后提交，将订单 状态改变，并记录一条流水，将所有表中有插入数据的serial_num改变成所要的 提交
	public Integer submitState(String loanId, String card) throws MarvelsBusinessException;
	/**
	 * 一键保存
	 * @param intBankTotalDto
	 * @throws MarvelsBusinessException
	 */
	public void saveAllForm(IntBankTotalDTO intBankTotalDto) throws MarvelsBusinessException;
	
	/**
	 * 更新贷款信息
	 * @param intBankCreditPaymentRecord
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public List<IntBankCreditPaymentRecordsDTO> saveIntBankCreditPaymentRecord(IntBankCreditPaymentRecordsDTO intBankCreditPaymentRecord) throws MarvelsBusinessException;
	
	/**
	 * 更新贷记卡
	 * @param intBankCreditCard
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public List<IntBankCreditCardDTO> saveCreditCard(IntBankCreditCardDTO intBankCreditCard) throws MarvelsBusinessException;
	
	/**
	 * 更新准贷记卡信息
	 * 
	 * @return
	 */
	public List<IntBankStandardCreditCardDTO> saveStandardCreditCard(IntBankStandardCreditCardDTO intBankStandardCreditCard) throws MarvelsBusinessException;
	
	/**
	 * 更新养老保险金缴存记录
	 * @param intBankEndowmentInsurance
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public IntBankEndowmentInsuranceDTO saveIntBankEndowmentInsurance(IntBankEndowmentInsuranceDTO intBankEndowmentInsurance) throws MarvelsBusinessException;
	
	/**
	 * 更新查询记录汇总信息
	 * @param intBankQuerySummary
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public IntBankQuerySummaryDTO saveIntBankQuerySummary(IntBankQuerySummaryDTO intBankQuerySummary) throws MarvelsBusinessException;
	
	/**
	 * 保存查询记录
	 * @param intBankQueryDetail
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public List<IntBankQueryDetailDTO> saveIntBankQueryDetail(IntBankQueryDetailDTO intBankQueryDetail) throws MarvelsBusinessException;
	
	/**
	 * 保存个人查询记录
	 * @param intBankBanruDetail
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public List<IntBankBanruDetailDTO> saveIntBankBanruDetail(IntBankBanruDetailDTO intBankBanruDetail) throws MarvelsBusinessException;
	
	/**
	 * 提交
	 * @param loanId
	 * @return 
	 * @throws MarvelsBusinessException
	 */
	public MarvelsResultDTO submitCreditReport(String loanId) throws MarvelsBusinessException;
	
	/**
	 * 退回
	 * @param loanId
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public void returnCreditReport(String loanId) throws MarvelsBusinessException;
}
